# TODO 什么是魔术方法（魔法方法）
"""
python中内置的具有特殊功能的方法
"""

# TODO 特点
"""
1. 魔术方法不需要手动调用自动执行
2. 在对类的实例进行一些操作的时候会触发魔术方法的执行
"""


# TODO 魔术方法
"""
__init__
__str__
__del__
"""

# __init__:对象初始化方法
# 作用：初始化对象属性
# 触发: 创建类的对象以后

# 定义类
class Demo:
    # 定义魔术方法init
    def __init__(self):
        print('init执行了')


# 创建对象
Demo()
print('==' * 20)


# 定义学生类
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age


# __str__
# 作用：当print打印对象的时候，可以输出自定义的字符串
# 触发：当对象被print打印的时候
# 注意：必须返回字符串类型


class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name + ',' + str(self.age)


s1 = Student('hello', 10)
print(s1)

s2 = Student('good', 10)
print(s2)

# __del__
# 作用：对象销毁之前的收尾工作
# 触发：对象被销毁前

# 定义类
class Demo:
    def __del__(self):
        print('del执行了')

# 创建对象
d1 = Demo()
# del d1